import random
from datetime import datetime
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse
from app01.utils.form import OrderModelForm
from app01 import models
from app01.utils.pageination import Pagination


def order_list(request):
    """订单列表"""
    queryset = models.Order.objects.all().order_by('-id')
    page_object = Pagination(request, queryset)
    form = OrderModelForm()
    context = {
        'form': form,
        'queryset': page_object.page_queryset,  # 分页之后的数据
        'page_str': page_object.html()  # 页码html
    }
    return render(request, 'order_list.html', context)


@csrf_exempt
def order_add(request):
    """创建订单"""
    form = OrderModelForm(data=request.POST)
    if form.is_valid():
        # 生成订单号:时间戳+随机数;不是用户输入的
        form.instance.oid = datetime.now().strftime('%Y%m%d%H%M%S') + str(random.randint(1000, 9999))
        # 设置管理员为当前登录管理员用户
        form.instance.admin_id = request.session['info']['id']
        form.save()
        # return HttpResponse(json.dumps({'status': True}))
        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})


def order_delete(request):
    """删除订单"""
    uid = request.GET.get('uid')
    exists = models.Order.objects.filter(id=uid).exists()
    if not exists:
        return JsonResponse({'status': False, 'error': '订单不存在'})
    models.Order.objects.filter(id=uid).delete()
    return JsonResponse({'status': True})


def order_edit(request):
    """编辑订单"""
    # 方法1：
    """
        uid = request.GET.get('uid')
        row_object = models.Order.objects.filter(id=uid).first()
        if not row_object:
            return JsonResponse({'status': False, 'error': '订单不存在'})
        result = {
            'status': True,
            'data': {
                'title': row_object.title,
                'price': row_object.price,
                'status': row_object.status,
            }
        }
        return JsonResponse(result)
    """
    uid = request.GET.get('uid')
    row_dict = models.Order.objects.filter(id=uid).values('title', 'price', 'status').first()
    if not row_dict:
        return JsonResponse({'status': False, 'error': '订单不存在'})
    result = {
        'status': True,
        'data': row_dict
    }
    return JsonResponse(result)


@csrf_exempt
def order_detail(request):
    """编辑订单"""
    uid = request.GET.get('uid')
    row_object = models.Order.objects.filter(id=uid).first()
    if not row_object:
        return JsonResponse({'status': False, 'tips': '数据不存在'})
    form = OrderModelForm(data=request.POST, instance=row_object)
    if form.is_valid():
        form.save()
        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})